package interfaz;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;

import Persistencia.Conexion;

public class InterfazPrincipal extends JFrame implements ActionListener {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * Panel de inventario libros
	 * 
	 */
	private JPanel panelLibros;
	/**
	 * Panel Peliculas
	 */

	private JPanel panelPeliculas;
	/**
	 * Panel de Ingreso a Inventario
	 */
	private JPanel panelIngreso;
	

	private static final String columnas [] = {"ID","Nombre","Descripcion"};

	private static final String columnasP [] = {"Titulo","Director","Genero"};

	private JButton botonIngresar;

	private JButton botonBorrar;

	private JButton botonGuardar;

	private JButton botonSalir;

	private JButton botonBuscar;

	private JTable tablaLibros;

	private JTable tablaPeliculas;

	private DefaultTableModel modeloTabla;

	private Conexion conexion;

	DialogoBuscar dialogo ;

	private JTextField textNombre;
	private JTextField textID ;
	private JTextField textDescripcion;

	public InterfazPrincipal() {

		setTitle("Inventario Libros y Peliculas");
		setSize(800,300);
		setLocationRelativeTo(null);
		setResizable(false);
		setDefaultCloseOperation(EXIT_ON_CLOSE);


		// Crea nuevo panel de libros y sus componentes
		panelLibros = new JPanel();
		panelLibros.setBorder(new TitledBorder("Inventario Libros"));
		panelLibros.setLayout(new GridLayout(1,1));
		

		// Crea panel de ingreso de articulo al inventario
		panelIngreso = new JPanel(); 
		panelIngreso.setBorder(new TitledBorder("Registrar Libros y Peliculas"));
		panelIngreso.setLayout(new GridLayout(4,2));


		// etiquetas del panel de ingreso
		JLabel labelNombre = new JLabel("Nombre");
		JLabel labelID = new JLabel("ID");
		JLabel labelDdescripcion = new JLabel("Descripcion");


		// textos panel de ingreso
		textNombre = new JTextField();
		textID = new JTextField();
		textDescripcion = new JTextField();


		// botones
		botonIngresar = new JButton("Registrar");
		botonIngresar.setActionCommand("X");
		botonIngresar.addActionListener(this);
		botonBorrar = new JButton("Borrar");

		panelIngreso.add(labelID);
		panelIngreso.add(textID);
		panelIngreso.add(labelNombre);
		panelIngreso.add(textNombre);
		panelIngreso.add(labelDdescripcion);
		panelIngreso.add(textDescripcion);
		panelIngreso.add(botonIngresar);
		panelIngreso.add(botonBorrar);


		//combobox Genero de libros y peliculas
		JComboBox comboGenero = new JComboBox();





		//checks
		JCheckBox checkLibros = new JCheckBox("Libro");
		JCheckBox checkPelicula = new JCheckBox("Pelicula");
		JPanel panelCheck = new JPanel();  // panel contenedor para los checkbox
		panelCheck.setLayout(new GridLayout(1,1));
		panelCheck.setLayout(new FlowLayout());
		panelCheck.setPreferredSize(new Dimension(50,50));
		panelCheck.add(checkLibros);
		panelCheck.add(checkPelicula);


		//panel Peliculas
		panelPeliculas = new JPanel();
		panelPeliculas.setBorder(new TitledBorder("Lista de Peliculas"));
		panelPeliculas.setLayout(new GridLayout(1,1));
		DefaultTableModel modeloTablaPeliculas = new DefaultTableModel(columnasP,0);
		tablaPeliculas = new JTable(modeloTablaPeliculas);
		JScrollPane pane2 = new JScrollPane(tablaPeliculas);
		panelPeliculas.add(pane2);

		//panel operaciones

		JPanel panelOperaciones = new JPanel();
		panelOperaciones.setLayout(new GridLayout(1,3));
		panelOperaciones.setLayout(new FlowLayout());
		botonSalir = new JButton("Salir");
		botonGuardar = new JButton("Guardar");

		botonBuscar = new JButton("Buscar");
		botonBuscar.addActionListener(this);

		panelOperaciones.add(botonGuardar);
		panelOperaciones.add(botonBuscar);
		panelOperaciones.add(botonSalir);

		// panel libros
		modeloTabla = new DefaultTableModel(columnas,100);
		tablaLibros = new JTable(modeloTabla);
		JScrollPane pane = new JScrollPane(tablaLibros);
		panelLibros.add(pane);

		JPanel jPanel = new JPanel();
		jPanel.setLayout(new GridLayout(1,3));
		jPanel.add(new JLabel());
		jPanel.add(panelIngreso,BorderLayout.CENTER);
		jPanel.add(new JLabel());


		add(jPanel,BorderLayout.NORTH);
		add(panelLibros,BorderLayout.WEST);
		add(panelPeliculas,BorderLayout.CENTER);
		add(panelOperaciones,BorderLayout.SOUTH);


		actualizarBD();
	}


	private void actualizarBD(){

		conexion= new Conexion();
		conexion.cargarLibro();
		for (int i = 0; i < conexion.getListaLIbros().size(); i++) {

			modeloTabla.setRowCount(i+1);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getId(),i, 0);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getNombre(),i, 1);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getDescripcion(),i, 2);
		}
	}

	public void buscarPorNombre(String dato){

		conexion= new Conexion();
		dialogo = new DialogoBuscar();
		conexion.consultarPorDato(dato);
		for (int i = 0; i < conexion.getListaLIbros().size(); i++) {

			modeloTabla.setRowCount(i+1);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getId(),i, 0);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getNombre(),i, 1);
			modeloTabla.setValueAt(conexion.getListaLIbros().get(i).getDescripcion(),i, 2);
		}
		dialogo.setVisible(false);
		this.setVisible(true);

	}


	public void InsetarLibro(){
		if(textID.getText().length()>0&&textDescripcion.getText().length()>0
				&&textNombre.getText().length()>0){
			conexion.insertarLibro(textID.getText(), textNombre.getText(),
					textDescripcion.getText());
		}else
			JOptionPane.showMessageDialog(null, "Error");
		actualizarBD();
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		InterfazPrincipal principal = new InterfazPrincipal();
		principal.setVisible(true);

		// TODO Auto-generated method stub

	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == botonBuscar) {

			new DialogoBuscar().setVisible(true);

		}

		if (e.getActionCommand().equals("X")) {

			InsetarLibro();

		}


	}
}